﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Hydra.Shell.Attributes;
using Hydra.Shell.Enumerations;

namespace Hydra.Shell.Interfaces
{
    [Guid("59B2D1D0-5DB0-4F9F-9609-13F0168516D6")]
    public interface IHydraHierarchy : IUnknown
    {
        bool AdviseHierarchyEvents(IHydraHierarchyEvents pEventSink, out uint pdwCookie);
        bool UnadviseHierarchyEvents(uint dwCookie);
        bool Close();
        bool GetGuidProperty(uint itemid, HydraHierachyProperties propid, out Guid pguid);
        bool SetGuidProperty(uint itemid, HydraHierachyProperties propid, ref Guid rguid);
        bool GetProperty(uint itemid, HydraHierachyProperties propid, out object pvar);
        bool SetProperty(uint itemid, HydraHierachyProperties propid, object var);
        bool GetCanonicalName(uint itemid, out string pbstrName);
        bool GetNestedHierarchy(uint itemid, ref Guid iidHierarchyNested, out IHydraHierarchy ppHierarchyNested, out uint pitemidNested);
        bool GetSite(out IServiceProvider ppSP);
        bool GetSite<T>(out T ppvSite);
        bool ParseCanonicalName(string pszName, out uint pitemid);
        bool QueryClose(out bool pfCanClose);
        bool SetSite(IServiceProvider psp);
    }
}
